package com.sgl.common.utils.http;

import com.sgl.common.utils.sign.Base64;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
 * @author:xec
 * @date:2022/11/16 17:20
 **/
public class URLFileNameUtils {

    /**
     * 该方法要求JDK8及以下，可以针对不同的浏览器做不同的编码。
     * @param agent
     * @param filename
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String getFileName(String agent, String filename) throws UnsupportedEncodingException {
        if (agent.contains("MSIE")||agent.contains("Trident")) {
            // IE浏览器
            filename = URLEncoder.encode(filename, "utf-8");
            filename = filename.replace("+", " ");
        } else if (agent.contains("Firefox")) {
            // 火狐浏览器
            Base64 base64Encoder = new Base64();
            filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
        } else {
            // 其它浏览器
            filename = URLEncoder.encode(filename, "utf-8");
        }
        return filename;
    }

    /**
     * 能满足大多数浏览器，并且不要求JDK版本，建议使用该方法。
     * @param agent
     * @param filename
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String getFileName1(String agent, String filename) throws UnsupportedEncodingException {
        if (agent.contains("MSIE")||agent.contains("Trident")) {
            // IE浏览器
            filename = URLEncoder.encode(filename, "utf-8");
            filename = filename.replace("+", " ");
        } else {
            // 其它浏览器
            filename = new String(filename.getBytes("utf-8"),"ISO-8859-1");
        }
        return filename;
    }
}
